/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ejb.timeservice;

import com.core.GerenciadorFilaLocal;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Ricardo
 */
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@Stateless
public class AgendadorTarefaTSBean implements AgendadorTarefaTSRemote {

    @Resource
    private TimerService time;
    @PersistenceContext
    private EntityManager em;
    @EJB
    private GerenciadorFilaLocal fila;
    private boolean ligado = false;

    public void incializaTimeService() {
        //começar daqui a 1 minuto e executar periodicamente a cada 1 minuto;
        //TODO validar se existem aparelhos com status conectado, também definir os intervalos de tempo através do setup.
        //if (!isLigado()) {
            System.out.println("AGENDADOR >>> Serviço iniciado");
            time.createTimer(60 * 100, 60 * 250, null);
        //}
        fila.recuperaFila();
        setLigado(true);
    }

    @Timeout
    public void verificaAgendamentos(Timer timer) {
        //if (isLigado()) {
            adicionaPacotesNaFila();
        //}
    }

    public boolean getStatus() {
        return isLigado();
    }

    private void adicionaPacotesNaFila() {
        System.out.println("AGENDADOR >>> pesquisar por Pacotes");
        fila.recuperaFila();
    }

    /**
     * @return the ligado
     */
    public boolean isLigado() {
        return ligado;
    }

    /**
     * @param ligado the ligado to set
     */
    public void setLigado(boolean ligado) {
        this.ligado = ligado;
    }
}
